package com.os.opencv.java.chapter4;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;

import java.util.ArrayList;
import java.util.List;

public class Concat {

    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        //读取图像文件并在屏幕上显示
        Mat src1 = Imgcodecs.imread("/Users/matt/MATT-MAC/matt_workspace/OS-OpenCV_workspace/view.jpg",
                Imgcodecs.IMREAD_GRAYSCALE);
        Mat src2 = src1.clone();

        //hConcat函数需要的参数类型准备
        List<Mat> mat1 = new ArrayList<>();
        mat1.add(src1);
        mat1.add(src2);

        //将两幅图像进行水平拼接
        Mat dst = new Mat();
        Core.hconcat(mat1, dst);

        //在屏幕上显示水平拼接后的图像
        HighGui.imshow("hconcat", dst);
        HighGui.waitKey(0);

        //读取图像文件
        Mat src3 = Imgcodecs.imread("/Users/matt/MATT-MAC/matt_workspace/OS-OpenCV_workspace/test.jpg");
        Mat src4 = src3.clone();

        //vConcat函数需要的参数类型准备
        List<Mat> mat2 = new ArrayList<>();
        mat2.add(src3);
        mat2.add(src4);

        //将两幅图像进行垂直拼接
        Mat dst2 = new Mat();
        Core.vconcat(mat2, dst2);

        //在屏幕上显示垂直拼接后的图像
        HighGui.imshow("vconcat", dst2);
        HighGui.waitKey(0);

        System.exit(0);

    }
}
